Skip to content

Tighten new-problem funnel layout (workspace, grade, topic)#17

Merged
smilebank7 merged 2 commits into
mainfrom
feat/web-funnel-ui-polish
Jun 10, 2026
Merged

Tighten new-problem funnel layout (workspace, grade, topic)#17
smilebank7 merged 2 commits into
mainfrom
feat/web-funnel-ui-polish

Conversation

@smilebank7

@smilebank7 smilebank7 commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

What

Make the "새 문제 만들기" funnel read as a focused tool instead of a marketing page. First pass: workspace (S0), grade (S1), topic (S2). Editorial landing / untouched.

Why

At wide viewports the productivity screens spread out, and the workspace opened with a full-bleed black editorial hero, so the flow felt like a brochure. The grade step was visibly skewed (its work column was centered independently of the nav, indented ~190px), and the topic step forced ~1.3 screens of scrolling to pick a unit.

Changes

  • Width: remove the .app-canvas 1280->1600 override so /app/* obeys the 1280 productivity width (DESIGN.md). Steps now share the nav's left edge.
  • Workspace (/app): drop the black full-bleed hero; compact Inter header so the entry cards sit above the fold.
  • Grade (/app/new/grade): options as a compact 4-up row aligned to the container (fixes the ~190px skew). Accessibility, data and routing unchanged.
  • Topic (/app/new/topic): dense 3-up unit grid that fits one viewport (was a 1-column list beside a permanent half-empty example panel); the example preview now mounts on-demand below the grid after selection.
  • Remove the now-unused .container-step / .topic-grid-1col helpers and the empty-panel rules.

DESIGN.md productivity rules kept (flat, hairline, single accent, pill CTAs, sans app headers). No routing/data/schema changes.

Verification

  • pnpm -F @openmath/web typecheck + build pass (13 pages).
  • Browser QA at 1920x1080: grade grid left edge == nav brand (360px); topic scroll 1.31 -> 1.0 screen; console errors 0.

Out of scope (next)

Same alignment + density pass for intent (S3), verify (S4), result (S5), export (S6) — to be scoped separately.


Summary by cubic

Tightens the “새 문제 만들기” funnel so it reads like a focused tool. Aligns all steps to the 1280px productivity width, reduces scroll, and improves visual alignment across /app, /app/new/grade, and /app/new/topic.

  • Refactors
    • Remove the 1600px .app-canvas override so /app/* uses the 1280px spec; steps now share the nav’s left edge.
    • /app: replace the full-bleed hero with a compact workspace-header so entry cards sit above the fold.
    • /app/new/grade: render grades as a compact 4‑up grid aligned to the container; a11y/data/routing unchanged.
    • /app/new/topic: switch to a dense 3‑up topic grid; mount the example preview below the grid only after a selection (examples shown in responsive 3→2→1 columns).
    • Remove unused helpers and rules (.container-step, .topic-grid-1col, empty example-panel styles); adjust .topic-picker card spacing.

Written for commit 444d6f9. Summary will update on new commits.

Review in cubic

- Remove the .app-canvas 1280->1600 container override so /app/* obeys the 1280 productivity width (DESIGN.md spec); steps now align to the same left edge as the nav.
- Grade: lay the options as a compact 4-up row that fills the aligned container (was an 820 centered column indented ~190px from the nav, which looked skewed).
- Topic: replace the 1-column unit list + permanent half-empty example panel with a dense 3-up unit grid that fits one viewport; the example preview now mounts on-demand below the grid after a unit is selected.
- Drop the unused .container-step and .topic-grid-1col helpers and the empty-state example panel rules.
Drop the full-bleed black editorial hero on /app and lead with a compact Inter header so the 'new problem' entry cards sit above the fold and the workspace reads as a tool rather than a landing page.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 3 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="packages/web/app/app/new/topic/picker.tsx">

<violation number="1" location="packages/web/app/app/new/topic/picker.tsx:197">
P2: Conditionally mounting the `aria-live` region can prevent topic-preview announcements for screen-reader users.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

<div className="example-panel-empty">
<p className="example-panel-empty-title">
단원을 선택하면 예시 문제를 보여드려요
{selectedTopic !== null && selectedExamples !== undefined && (

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Conditionally mounting the aria-live region can prevent topic-preview announcements for screen-reader users.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At packages/web/app/app/new/topic/picker.tsx, line 197:

<comment>Conditionally mounting the `aria-live` region can prevent topic-preview announcements for screen-reader users.</comment>

<file context>
@@ -194,73 +194,61 @@ export function TopicPicker({ schoolLevel, grade }: Props) {
-              <div className="example-panel-empty">
-                <p className="example-panel-empty-title">
-                  단원을 선택하면 예시 문제를 보여드려요
+          {selectedTopic !== null && selectedExamples !== undefined && (
+            <aside
+              className="example-panel"
</file context>

@smilebank7 smilebank7 merged commit c0146ea into main Jun 10, 2026
5 checks passed
@smilebank7 smilebank7 deleted the feat/web-funnel-ui-polish branch June 10, 2026 02:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant